package com.chensi.security;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
 * 自定义shiro过滤器,实现全局过滤功能
 * @author Chason
 * @version 2016-1-12 上午10:43:01
 */
public class MyShiroFilter extends org.apache.shiro.web.filter.authc.FormAuthenticationFilter
{
	/**
	 * 表示是否允许访问，mappedValue就是[urls]配置中拦截器参数部分，如果允许访问返回true，否则false；
	 */
	@Override
	protected boolean isAccessAllowed(ServletRequest req, ServletResponse resp, Object obj)
	{
		boolean flag=super.isAccessAllowed(req, resp, obj);
		return flag;
		/*HttpServletRequest request=(HttpServletRequest) req;
		HttpSession session=request.getSession();
		if(!flag){
			log.info("被shiro禁止通过,则保存当前页面url，为了重新登录直接返回登录前页面");
			String url = request.getServletPath().replaceAll("//", "/");
			//获取查询条件
			String queryString=request.getQueryString();
			//保存登录前页面
			session.setAttribute("beforeLogin", StringUtils.hasLength(queryString)?url+"?"+queryString:url);
			return false;
		}
		//shiro允许通过,移除beforeLogin
		session.removeAttribute("beforeLogin");
		return true;*/
	}

	/**
	 * 表示当访问拒绝时是否已经处理了，如果返回true表示需要继续处理，如果返回false表示该拦截器实例已经处理了，将直接返回即可。
	 */
	@Override
	protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
		return super.onAccessDenied(request, response);
	}
	
	
}
